import scala.collection.mutable.ListBuffer

object TestList {
  def main(args: Array[String]): Unit = {

    /**
     * @ 7.3 列表List
     * @ 7.3.1 不可变List
     * 1）说明
     * （1）List默认为不可变集合
     * （2）创建一个List（数据有顺序，可重复）
     * （3）遍历List
     * （4）List增加数据
     * （5）集合间合并：将一个整体拆成一个一个的个体，称为扁平化
     * （6）取指定数据
     * （7）空集合Nil
     * */
    //（1）List默认为不可变集合
    //（2）创建一个List（数据有顺序，可重复）
    val list: List[Int] = List(1, 2, 3, 4, 3)

    //（7）空集合Nil
    val list5 = 1 :: 2 :: 3 :: 4 :: Nil

    //（4）List增加数据
    //（4.1）::的运算规则从右向左
    //val list1 = 5::list
    val list1 = 7 :: 6 :: 5 :: list
    //（4.2）添加到第一个元素位置
    val list2 = list.+:(5)

    //（5）集合间合并：将一个整体拆成一个一个的个体，称为扁平化
    val list3 = List(8, 9)
    //val list4 = list3::list1
    val list4 = list3 ::: list1

    //（6）取指定数据
    println(list.head)

    //（3）遍历List
    list.foreach(print)
    println()
    list1.foreach(print)
    println()
    list3.foreach(print)
    println()
    list4.foreach(print)
    println()
    list5.foreach(print)
    println()

    /**
     * @ 7.3.2 可变ListBuffer
     * 1）说明
     * （1）创建一个可变集合ListBuffer
     * （2）向集合中添加数据
     * （3）打印集合数据
     * */
    //（1）创建一个可变集合
    val buffer = ListBuffer(1, 2, 3, 4)
    //（2）向集合中添加数据
    buffer.+=(5)
    buffer.append(6)
    buffer.insert(1, 2)
    //（3）打印集合数据
    buffer.foreach(print)
    println()
    //（4）修改数据
    buffer(1) = 6
    buffer.update(1, 7)
    //（5）删除数据

    buffer.-=(5) // 删除下标为5的位置的元素
    buffer.foreach(print)
    println()
    buffer.remove(5) // 删除下标为5的位置的元素
    buffer.foreach(print)
    println()
  }
}
